关于python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]的探讨 您所在的位置:网站首页 open class words是什么意思 关于python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]的探讨

关于python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]的探讨

2023-12-01 14:40| 来源: 网络整理| 查看: 265

今天有刚学python的朋友问我他的python怎么运行报错

他的源代码是:

 

import sys #导入sys模块 input_file = sys.argv[1] output_file = sys.argv[2]   with open(input_file,'r',newline='') as filereader: with open(output_file,'w',newline='') as filewriter: header = filereader.readline() header = header.strip() header_list = header.split(',') print(header_list) for row in filereader: row = row.strip(',') row_list = row.split(',') print(row_list) filewriter.write(','.join(map(str,row_list))+'\n')

 

我也不知道源代码错还是对,但是他运行直接运行py文件,之后就不用想报错啊

    input_file =  sys.argv[1] IndexError: list index out of range

原因是input_file 是其读取文件的文件名没有输入,但这个是由sys.argv[1]接受,所以会报错。

下面说明python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]是什么意思、该怎么理解?

看一下python代码:

import sys test = sys.argv[0] test1 = sys.argv[1] test2 = sys.argv[2] print(test) print(test1) print(test2)  

运行这个py文件,直接运行也会报错

然后我们这样运行

会打印出信息并不会报错这是为什么尼?

test打印的信息是:文件路径

test1打印的信息是:111

test2打印的信息是:222

这才知道sys.argv[0]接收的是文件名(如果运行文件和运行终端不在同一路径下会接收其的路径及文件名)

sys.argv[1] 接收的的在终端传入的第一个参数

sys.argv[1]接收的的在终端传入的第二个参数

在看下面代码,进一步进行了解

import sys list1 = ["111","222","333"] print(list1) print(list1[0])   list2 = sys.argv print(list2) print(list2[1]) print(sys.argv[1])

采用上述方法运行,会有如下图结果

这才恍然大悟原来sys模块sys.argv是个列表,而sys.argv[0]、sys.argv[1]、sys.argv[2]只不过是在取列表中的值,但这个列表有我们决定。

这才朋友的那个运行应该是这样的:test.py 1.txt 2.txt



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有